-------------------------------------------------------------------------------- --- HIGHLIGHT MANUAL (W32 GUI) - Version 2.2-8 --------------- FEBRUAR 2004 --- -------------------------------------------------------------------------------- OSI Certified Open Source Software Highlight konvertiert Sourcecode in XHTML, HTML, RTF, TeX, LaTeX, XSL-FO und XML Dateien mit Syntaxhervorhebung. Sprachdefinitionen, Farbschemen und Einrückungs- stile sind konfigurierbar INHALT: -------------------------------------------------------------------------------- 1. Betriebsysteme 2. Unterstützte Programmier- /Auszeichnungssprachen 3. Features 4. Neue Sprachdefinitionen definieren 5. Neue Farbstile definieren 6. Neues Einrückungsschema definieren 7. Integration in Windows Explorer 8. Kontakt 1.BETRIEBSSYSTEME -------------------------------------------------------------------------------- Highlight ist in C++ geschrieben. Momentan existieren 3 Versionen: - UNIX Konsolenanwendung - Win32 Konsolenanwendung - Win32 GUI Der Sourcecode ist mit gcc 3.x, MS Visual .NET und MW Codewarrior8 kompilierbar. 2. UNTERSTÜTZTE PROGRAMMIER -/ AUSZEICHNUNGSSPRACHEN: -------------------------------------------------------------------------------- Momentan unterstutzt Highlight folgende Programmiersprachen, Markup-Sprachen und Konfigurationsdateien: Action Script, ADA 95, Agda, AMPL, Aspect, Assembler, Amtrix, Avenue, (G)AWK, Bash, BlitzBasic, BibTex, BMS, C, C++, C#, ClearBasic, Clipper, Cobol, Coldfusion MX, CSS, DOS-Batch, Eiffel, Erlang, Euphoria, Express, Felix, Fortran, Frink, Haskell, HTML, httpd.conf, Icon, IDL, INI, IO, Jasmin, Java, JavaScript, JSP, LaTeX, LDIF, Lisp, Lotos, Lotus Script, Lua, Make,Maya, Matlab, Maple, Modelica, Modula 3, Nasal, OCaml, (Object) Pascal, Objective C, Paradox, PATROL, Perl, PHP, Pike, PL/1, PL/SQL, PostScript, POV Ray, Progress, Prolog, Python, Relax NG Compact, Rexx, RPM Spec, Ruby, Small, SML, SNMPv2, Spin, Squirrel, Sybase, VHDL, Visual Basic, XML. 3. FUNKTIONEN: -------------------------------------------------------------------------------- - Farbige Hervorhebung von Schlüsselwörtern, Typbezeichnern, Strings, Zahlen, Escapesequenzen, Symbolen, Direktiven und Kommentaren - Hervorhebung von selbstdefinierten Schlüsselwort-Gruppen - Konfigurierbare Neuformatierung und Einrückung von C, C++, C# und Java Sourcecode - Automatisches Umbrechen von überlangen Zeilen - Ausgabe im HTML-, XHTML-, RTF-, TeX, LaTeX, XSL-FO und XML - Ausgabe von Zeilennummern - Speichern der CSS-Definition wahlweise in separater Datei oder innerhalb der Ausgabedatei - 50 Farbstile - Konvertierung von ASCII Textdateien ohne Highlighting in eines der Ausgabeformate 4. HIGHLIGHT DATEIFORMAT -------------------------------------------------------------------------------- Alle Konfigurationsdateien werden als einfache ASCII-Textdateien gespeichert. Das Format ist einfach gehalten: $ParameterName=ParameterWert ParameterName ist der Bezeichner für den Paramter, ParameterWert ist sein Wert. Die Bezeichner sind nicht case sensitive. Der Wert kann aus einem Zeichen oder auch einer Liste von Wörtern bestehen. Listen können in mehrere Zeilen aufgeteilt werden. Kommentare beginnen mit # als erstem Zeichen in der Zeile. 5. NEUE SPRACHDEFINITION DEFINIEREN: -------------------------------------------------------------------------------- Eine Sprachdefinitionen ist eine Textdatei, in der Schlüsselwörter und Symbole einer Programmiersprache mehreren Kategorien zugeordnet werden. Die Datei muss im Installatinverzeichnis in langDefs/ unter folgendem Namen gespeichert werden: <übliche Endung der Sourcecodedateien>.lang Beispiele: PHP -> php.lang, Java -> java.lang Sollte es mehrere gebräuchliche Endungen geben, kann man diese in der Datei extensions.conf* notieren. DATEIFORMAT: # Liste der Schlüsselwörter, ist der Name der Schlüsselwort-Gruppe # Die Klasse muss in dem angewandten Farbschema definiert sein, um eine passende # Hervorhebung zu ermöglichen $KW_LIST()= # Präfix, die Schlüsselwörter markiert # Die Klasse muss in dem angewandten Farbschema definiert sein, um eine passende # Hervorhebung zu ermöglichen $KW_PREFIX()= # Begrenzer für Schlüsselwörter # Die Klasse muss in dem angewandten Farbschema definiert sein, um eine passende # Hervorhebung zu ermöglichen $KW_DELIM()= # Tagbegrenzer # Tags werden wie Schlüsselwörter formatiert $TAG_DELIM(class)= # Liste der Stringbegrenzer $STRINGDELIMITERS= # Liste der Escapecharacter innerhalb von Strings (normalerweise \) $ESCCHAR= # Präfix, die das Hervorheben von Escapesequenzen in "Simplified Strings" # (C#) verhindert $RAWSTRINGPREFIX= # Kommentarbeginn und -ende beim mehrzeiligen Kommentar $ML_COMMENT= # Liste der Bezeichner, die einen einzeiligen Kommentar einleiten $SL_COMMENT= # Auf true setzen, falls einzeilige Kommentare in Spalte 1 beginnen $FL_COMMENT= # Einleitender Bezeichner von Compilerdirektiven $DIRECTIVE= # Auf true setzen, falls Sprache reformatiert werden kann (nur C-ähnliche # Sprachen) $REFORMATTING= # Symbole wie z.B. Klammern oder Operatoren, die hervorgehoben werden sollen $SYMBOLS= # Character, die in Schlüsselwörtern auftreten können $ALLOWEDCHARS= # Falls mehrzeilige Kommentare verschachtelt werden dürfen, auf true # setzen $ALLOWNESTEDCOMMENTS= # Falls Programmiersprache nicht case-sensitive ist, auf true setzen $IGNORECASE= # Füge eine andere Sprachdefinition aus dem selben Verzeichnis ein $INCLUDE= Beim Erstellen neuer Dateien kann man die Schlüsselwörter aus Dateien anderer Programme mit Syntaxhighlighting (z.B VIM, UltraEdit) kopieren. Beispiel: #Inhalt von pas.lang (Pascal/Objekt Pascal) $KW_LIST(kwa)=true false if else then nil maxint case goto label and div downto in mod not of or packed with do for do repeat while to until procedure function program begin end const var type unit interface implementation uses private public $KW_LIST(kwb)=array boolean char integer file pointer real set string text record $STRINGDELIMITERS=" ' $SL_COMMENT=// $ML_COMMENT={ } $IGNORECASE=true 6. NEUEN FARBSTIL DEFINIEREN: -------------------------------------------------------------------------------- Die Farbstile bestehen aus einfachen ASCII-Dateien, in denen man die Format- eigenschaften der Ausgabe festlegt. Die RTF- Ausgabe ignoriert die Hintergrund- farbe. Die Dateien müssen mit der Endung .style im highlight - Verzeichnis/themes* gespeichert werden. DATEIFORMAT: # = RR GG BB #RR GG BB steht dabei für die hexadezimalen Rot/Grün/Blau - Werte, die die #gewünschte Farbe definieren. #(Wertebereich: 00 (kein Anteil) - FF (voller Anteil)) # = ( ) # Bold, italic und underline sind optional und können kombiniert werden. # Farbe des nicht erkannten Textes $DEFAULTCOLOUR= # Hintergrundfarbe $BGCOLOUR= # Schriftgrösse $FONTSIZE= # Formatierung von Schlüsselwörtern, die zu der gleichnamigen Klasse gehören $KW_CLASS()= ( ) # Formatierung von Zahlen $NUMBER= ( ) # Formatierung von Escape Character $ESCAPECHAR= ( ) # Formatierung der Strings $STRING= ( ) # Formatierung von Strings innerhalb von Compilerdirektiven $STRING_DIRECTIVE= ( ) # Formatierung von Kommentaren $COMMENT= ( ) # Formatierung von einzeiligen Kommentaren (optional, sonst wie $COMMENT) $SL-COMMENT= ( ) # Formatierung von Compilerdirektiven $DIRECTIVE= ( ) # Formatierung von Klammern (optional, sonst wie $DEFAULTCOLOR) $SYMBOL= ( ) # Formatierung von Zeilenummern $LINE= ( ) Beispiel: # golden.style $DEFAULTCOLOUR=dd bb 00 $BGCOLOUR=00 00 00 $FONTSIZE=10 $KW_CLASS(kwa)=dd bb 00 bold $KW_CLASS(kwb)=dd bb 00 $NUMBER=ff ff ff $ESCAPECHAR=ff 00 00 $STRING=ff 00 00 $STRING_DIRECTIVE=ff 00 00 $COMMENT=97 83 45 italic $DIRECTIVE=ff dd aa $LINE=97 83 45 7. NEUES EINRüCKUNGSSCHEMA DEFINIEREN -------------------------------------------------------------------------------- Sie können die Formatierung und Einrückung selbst anpassen. Um die Formatierung für die eingesetzte Programmiersprache zu ermöglichen, muss in der Sprach- definition die Option $REFORMATTING=true gesetzt sein. Beachten Sie, dass der Artistic Style Parser für die Verarbeitung von C-ähnlicher Syntax ausgelegt ist. Das neue Schema speichern Sie bitte als *.indent Textdatei in highlightVerz/ indentSchemes*. DATEIFORMAT: Kommentare beginnen mit # als erstem Zeichen in der Zeile. # Behandlung von Klammern: # "break": Löse Klammern vom letzten Block (ANSI C/C++ style). # "attach": Verbinde Klammern mit letztem Block (Java/K&R style). # "linux": Löse Klammern von Definitionsblöcken, verbinde Klammern mit # Kommandoblöcken # "break-closing-headers": Break brackets before closing headers (e.g. 'else', # 'catch', ..). Should be appended to $brackets=attach # or $brackets=linux. $BRACKETS= # Umschliesse Blöcke, Labels und Klassen mit Leerzeilen # "true": Standardmodus # "all": Umschliesse auch closing headers (e.g. 'else', 'catch', ...). $BREAK-BLOCKS= # Teile 'else if()' Anweisungen in zwei Zeilen auf $BREAK-ELSEIFS= # Rücke Blöcke inkl. Klammern zusätzlich ein $INDENT-BLOCKS= # Rücke die Blockklammern '{' und '}' zusätzlich ein $INDENT-BRACKETS= # Rücke 'case XXX:' Zeilen ein, so dass sie mit dem zugehörigen Code # ausgerichtet sind $INDENT-CASES= # Rücke 'class' -Blöcke ein, so dass die inneren 'public:', 'protected:' und # 'private:' Bezeichner passend zum class-Block ausgerichtet sind. $INDENT-CLASSES= # Rücke Label um eine Stufe weniger als der umgebende Block ein, anstatt sie # komplett nach links zu verschieben (default) $INDENT-LABELS= # Rücke den Inhalt von namespace - Blöcken ein. $INDENT-NAMESPACES= # Rücke mehrzeilige #define Anweisungen ein INDENT-PREPROCESSOR= # Rücke mit Leereichen pro Einzug ein (Defaultwert: 4) $INDENT-SPACES= # Rücke 'switch' Blöcke ein, so dass die inneren 'case XXX:' Anweisungen am # switch - Block ausgerichtet sind. $INDENT-SWITCHES= # Schalte in den Java-Modus (nur geeignet für Java Code) $JAVA-STYLE= # Rücke mehrzeilige Anweisungen in Bezug zur Vorgängerzeile mit max. # Leerzeichen ein $MAX-INSTATEMENT-INDENT= # Rücke mehrzeilige Bedingungen (in einem 'if' oder 'while' Block) mit # mindestens Leerzeichen ein. $MIN-CONDITIONAL-INDENT= # Umschliesse Symbole mit Leerzeichen: # "paren": Nur Klammern umschliessen # "oper": Nur Operatoren umschliessen # "all": Klammern und Operatoren umschliessen $PAD= Beispiel: # K&R indentation scheme $indent-brackets=false $indent-spaces=4 $brackets=attach $indent-classes=false $indent-switches=false $indent-namespaces=false 8. INTEGRATION IN WINDOWS EXPLORER -------------------------------------------------------------------------------- Fügen Sie eine Verknüpfung zur WinHighlight.exe im Ordner "SendTo" hinzu, der sich im Homeverzeichnis des angemeldeten Benutzers befindet. Nun können Sie im Explorer die Eingabedateien markieren, über das Kontextmenü "Senden an" wählen und anschließend WinHighlight anklicken. Die Dateien befinden sich nach dem Programmstart in der Liste der Eingabedateien. 9. KONTAKT: -------------------------------------------------------------------------------- André Simon andre.simon1@gmx.de http://www.andre-simon.de